class PrintChar{

  //构造函数主要获取打印字符串的行数
  constructor(num = 5,str = "A"){
    var num = num;
    var str = str;
    this.getNum = function(){
      return num;
    }
    this.getStr = function(){
      return str;
    }
  }

  /*
  打印正三角型
  */
  for1(){
    var num = this.getNum();
    for(var i=0; i<=num;i++){
      var char = "";
      for(var j=0;j<i;j++) {
        char = char + this.getStr();
      }
      console.log(char);
    }
  }

  /**
  打印倒三角型
  */
  for2(){
    var num = this.getNum();
    while(num>0){
      var char = "";
      for(var i = 0;i<num;i++){
        char = char + this.getStr();
      }
      console.log(char);
      num--;
    }
  }


  /**
  打印偶数字符倒三角型
  */
  for3(){
    var num = this.getNum();
    while(num>0){
      var char = "";
      for(var i = 0;i<num;i++){
        if(num%2==0){//判断打印字符是否为偶数，为偶数则进行打印
          char = char + this.getStr();
        }else{//打印字符数为奇数则不打印
          continue;
        }

      }
      console.log(char);
      num--;
    }
  }


  /*
  打印空心三角型
  */
  for4(){
    var num = this.getNum();//打印行数
    var maxNum = num%2==0 ? num - 1 : num;//如果行数为偶数，则最大字符A数量为num-1，如果num为奇数，则最大字符A数量=num
    for(var i=0;i<=num;i++){
      var char = "";
      if(i%2!=0){//等腰三角形输出图形数为奇数
        for(var j = (num-i)/2;j>0;j--){//打印等腰三角形图形前的空格
            char = char + " ";
        }
        for(var k = i;k>0;k--){//打印指定字符
          if(i==maxNum){//最后一行全部打印指定字符
            char = char + this.getStr();
          }else{
            char = (k==1) || (k==i) ? char + this.getStr() : char + " ";//第一个和最后一个字符为指定字符A，其他字符为空格
          }
        }
      }else{
        continue;
      }
      console.log(char);
    }
  }
}


var a = new PrintChar(10,"A");
a.for1();
console.log("------------------/n");
a.for2();
console.log("------------------/n");
a.for3();
console.log("------------------/n");
a.for4();
